//
//  YYNumberLabel.m
//  DrawDemo
//
//  Created by 姚英 on 16/6/3.
//  Copyright © 2016年 Passion. All rights reserved.
//

#define HEX_COLOR(hex) [UIColor colorWithRed:((float)((hex & 0xFF0000) >> 16))/255.0 green:((float)((hex & 0xFF00) >> 8))/255.0 blue:((float)(hex & 0xFF))/255.0 alpha:1]
#define RGBA_COLOR(r,g,b,a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a]

//将浮点数保留3位小数
#define YY_FLOAT_3(f) ((float)((int)((f)*1000)))/1000

//将浮点数保留3位小数
#define YY_COLOR(a) YY_FLOAT_3((a)/255.0)

//f=((float)((int)(f*100)))/100;

#import "YYNumberLabel.h"

@interface YYNumberLabel ()
/// colorLevel
@property(nonatomic, strong) NSMutableArray *colorLevel;


@end

@implementation YYNumberLabel

// 初始化一个很大的值.
static int oldLevel = 999;

static const int count = 6;
//static const int numberLevel[count] = {16 , 33 , 49, 66 , 82 ,100};
static const int numberLevel[count] = {35 , 75 , 115, 150 , 250 ,1000};

-(void)setText:(NSString *)text{
    
    int value = [text intValue];
    
    // 根据 value 判断当前的颜色等级
    int level;
    for (level = 0; level < count; level ++) {
        
        if (value <= numberLevel[level]) break;
    
    }

    if (level != oldLevel) {
        oldLevel = level;
        self.changeColor(level);

    }
    
    [super setText:text];
}

-(NSMutableArray *)colorLevel{
    
    if(_colorLevel == nil){
        _colorLevel = [NSMutableArray array];
        [_colorLevel addObject: RGBA_COLOR( 27, 199,  15, 1)];
        [_colorLevel addObject: RGBA_COLOR(255, 255,  10, 1)];
        [_colorLevel addObject: RGBA_COLOR(229, 120,  19, 1)];
        [_colorLevel addObject: RGBA_COLOR(251,   0,   8, 1)];
        [_colorLevel addObject: RGBA_COLOR(134,  33,  83, 1)];
        [_colorLevel addObject: RGBA_COLOR(124,  54,  56, 1)];
    }
    return _colorLevel;
}

#pragma mark - 将pm25的值转化为圆环对应的进度
//#define PM_N1 (4.0/9.0)   //第一部分的值
//#define PM_N2 (1.0/6.0)   //第二部分的值
//#define PM_N3 (1.0/45.0)   //第三部分的值
/// 将pm25的值转换成进度条中的浮点数字
-(CGFloat)pm25ToNumber:(NSInteger)pm25{
    
    if (pm25 > 1000) pm25 = 1000;
    if (pm25 < 1) pm25 = 1;
    
    static const CGFloat n1 = 4.0/9.0;
    static const CGFloat n2 = 1.0/6.0;
    static const CGFloat n3 = 1.0/45.0;
    
    CGFloat pm_25 = (CGFloat)pm25;
    CGFloat number = 0;
    
    if(pm25 > 250 )
    {
        number = n3 * (pm_25 - 250) + n2 * 100 + n1 * 150;
    }
    else if(pm25 > 150)
    {
        number = n2 * (pm_25 - 150) + n1 * 150;
    }
    else
    {
        number = n1 * pm_25;
    }
    
    return number;
}

/*
 圆环的总度数 360 - 45 = 315度
 分为 3部分,
 第一部分pm2.5的间隔是1,范围 : 45度 ~ 45+180度.(圆的底部中点为0度,圆环的其实位置为45度),
 对应的PM2.5范围  : 0 ~ 150.
 pm2.5 每增加1 ,度数增加 180/150 ,值增加 (180/150) * (100/270) = 4/9 = 0.44444
 
 第二部分pm2.5的间隔是x,范围 : 45+180度 ~ 45+180+45 度.
 对应的PM2.5范围  : 150 ~ 250.
 pm2.5 每增加1 ,度数增加 45/100 ,值增加 (45/100) * (100/270) = 1/6 = 0.1666666
 
 第三部分pm2.5的间隔是x,范围 : 45+180+45度 ~ 45+180+45+45 度.
 对应的PM2.5范围  : 250 ~ 1000.
 pm2.5 每增加1 ,度数增加 45/750 ,值增加 (45/750) * (100/270) = 1/45 = 0.02222
 */

@end
